import { createI18n, type I18nOptions } from 'vue-i18n'
import { useSysGlobalStore } from '@/stores/use-global-store.ts'
import type { Pinia } from 'pinia'

export const createI18nInstance = (pinia: Pinia) => {
    const sysGlobalStore = useSysGlobalStore(pinia)

    const i18nOptions: I18nOptions = {
        locale: sysGlobalStore.sysLang,
        fallbackLocale: 'zh-cn',
        globalInjection: true,
        messages: {} // 初始为空，后续通过 getLang 动态注册
    }

    const i18nInstance = createI18n(i18nOptions)

    // 暴露实例供全局使用
    window.i18nInstance = i18nInstance
    return i18nInstance
}

export default createI18nInstance

// el语言格式转化
export const formatLang = (locale: string) => {
    if (!locale) return 'zhCn' // 默认值

    const lowerLocale = locale.toLowerCase()
    // 特殊语言处理
    const specialLang = ['zh-cn', 'nb-no', 'zh-tw', 'pt-br', 'ug-cn', 'hy-am']

    if (specialLang.includes(lowerLocale)) {
        // 手动实现 camelCase 转换
        return lowerLocale.replace(/-(\w)/g, (_, char) => char.toUpperCase())
    } else {
        // 非特殊语言取前两位（如 'en-us' → 'en'）
        return lowerLocale.slice(0, 2)
    }
}

// 语言选项配置
export const langOptions = [
    {
        name: '简体中文',
        value: 'zh-cn'
    },
    {
        name: '中文繁体',
        value: 'zh-tw'
    }
]

// 类型定义（可选，用于TypeScript类型提示）
export interface LangOption {
    name: string
    value: string
}
